#ifndef _TD_ANIMATIONSET_FACTORY_H_
#define _TD_ANIMATIONSET_FACTORY_H_

/************************************************************************/
/* Core																	*/
/************************************************************************/
#include "Core/Singleton.h"

/************************************************************************/
/* Game																    */
/************************************************************************/
#include "Game/Animations/StandardAnimationSet.h"
#include "Game/GameCore.h"


using namespace std;
using namespace TD_Core;
using namespace TD_Resources;

namespace TD_Game {

	class AnimationSetFactory : public Singleton<AnimationSetFactory> {

		public:

		 
		 /************************************************************************/
		 /* ctors and dtors					                                    */
		 /************************************************************************/
		 //Default constructor
		 explicit AnimationSetFactory();

		 //Copy constructor
		 explicit AnimationSetFactory(const AnimationSetFactory &rhs);

		 //Assignment constructor
		 AnimationSetFactory& operator=(const AnimationSetFactory &rhs);

		 //Destructor
		 ~AnimationSetFactory();

		 /************************************************************************/
		 /* Functionalities                                                      */
		 /************************************************************************/

		 static AnimationSet * createMarioAnimationSet(const marioTypes &animType, const string &initialAnimation);

		 static AnimationSet * createBowserAnimationSet(const bowserTypes &animType, const string & initialAnimation);

		 static AnimationSet * createShotAnimationSet(const shotTypes & animType, const string &initialAnimation);

		 static AnimationSet * createTowerAnimationSet(const towerTypes & animType, const string &initialAnimation);

	};

}
#endif